package com.hdsx.restful.glzt.structure.jtlgcz.rest;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.springframework.stereotype.Service;

import com.hdsx.restful.base.PreparedDataListener;
import com.hdsx.restful.glzt.roadline.lxxx.bean.Znode;
import com.hdsx.restful.glzt.structure.jtlgcz.bean.Jtlgcz;
import com.hdsx.restful.glzt.structure.jtlgcz.service.JtlgczServer;
import com.hdsx.restful.glzt.structure.ql.bean.StatisticalResult;
import com.hdsx.restful.util.CheckEmpty;
import com.hdsx.restful.util.Dao;
import com.hdsx.restful.util.EasyUI;


// TODO: Auto-generated Javadoc
/**
 * jtlgcz服务
 */
@Path("/jtlgcz")
@Service
public class JtlgczRestServer {

    /** The jtlgcz server. */
    @Resource(name = "jtlgczServerImpl")
    private JtlgczServer server;

    @GET
    @Path("/getListByLxbm")
    @Produces(MediaType.APPLICATION_JSON)
    public EasyUI<Jtlgcz> getListByLxbm(@QueryParam("lxbm") String lxbm,@QueryParam("page") int page,@QueryParam("rows") int rows){
        EasyUI<Jtlgcz> easyUI=new EasyUI<Jtlgcz>(page,rows);
        int count =server.queryJtlgczCountByLxbm(lxbm);
        List<Jtlgcz> qlListByLxbm = server.getListByLxbm(lxbm,easyUI.getBegin(),easyUI.getEnd());
        easyUI.setTotal(count);
        easyUI.setRows(qlListByLxbm);
        return easyUI;
    }

    @GET
    @Path("/getListByXzqhbm")
    @Produces(MediaType.APPLICATION_JSON)
    public EasyUI<Jtlgcz> getListByXzqhbm(@QueryParam("xzqhbm") String xzqhbm,@QueryParam("page") int page,@QueryParam("rows") int rows){
        EasyUI<Jtlgcz> easyUI=new EasyUI<Jtlgcz>(page,rows);
        int count =server.queryJtlgczCountXzqhbm(xzqhbm);
        List<Jtlgcz> qlListByXzqhbm = server.getListByXzqhbm(xzqhbm,easyUI.getBegin(),easyUI.getEnd());
        easyUI.setTotal(count);
        easyUI.setRows(qlListByXzqhbm);
        return easyUI;
    }


    /**
     * http://192.168.0.137:8080/restful/rest/jtlgcz/list?lxbm=G65&xzqhbm=610824&gczmc=榆靖350.900&page=0&rows=10
     * @param lxbm
     * @param xzqhbm
     * @param gczmc
     * @param page
     * @param rows
     * @return
     */
    @GET
    @Path("/list")
    @Produces(MediaType.APPLICATION_JSON)
    public EasyUI<Jtlgcz> getList(@QueryParam("lxbm") String lxbm,@QueryParam("xzqhbm")String xzqhbm,
			@QueryParam("sxxfx") String sxxfx,@QueryParam("qdzh") String qdzh_string,
			@QueryParam("zdzh") String zdzh_string,@QueryParam("name") String name,
			@QueryParam("page") int page,@QueryParam("rows") int rows) throws Exception{
		EasyUI<Jtlgcz> easyUI=new EasyUI<Jtlgcz>(page,rows);
		Double qdzh = null;
		Double zdzh = null;
		try{
			qdzh = Double.parseDouble(qdzh_string);
			zdzh = Double.parseDouble(zdzh_string);
		}catch(Exception e){
			System.out.println("qdzh和zdzh没有输入或格式错误！");qdzh=null;zdzh=null;
		}
		xzqhbm = CheckEmpty.subXzqhbm(xzqhbm);
		int count =server.queryCount(lxbm,xzqhbm,sxxfx,qdzh,zdzh,name);
		List<Jtlgcz> results = server.queryList(lxbm,xzqhbm,sxxfx,qdzh,zdzh,name,easyUI.getBegin(),easyUI.getEnd());
		easyUI.setTotal(count);
		easyUI.setRows(results);
		return easyUI;
	}


    @GET
    @Path("/getBygczbm")
    @Produces(MediaType.APPLICATION_JSON)
    public Jtlgcz getBygczbm(@QueryParam("gczbm") String gczbm){
        Jtlgcz jtlgcz = server.getOne(gczbm);
        return jtlgcz;
    }



    /**
     * 根据id得到jtlgcz
     *
     * @param id
     *            唯一标识
     * @return
     */
    @GET
    @Path("/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public Jtlgcz getById(@PathParam("id") String id) {
        Jtlgcz jtlgcz = server.getById(id);
        return jtlgcz;
    }

    /**
     * 根据id删除jtlgcz
     *
     * @param id
     *            唯一标识
     * @return 若成功返回true，否则返回false
     */
    @DELETE
    @Path("/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public boolean deleteById(@PathParam("id") String id) {
        return server.deleteById(id);
    }

    /**
     * 更新jtlgcz
     *
     * @param jtlgcz
     *            待更新的jtlgcz
     * @return 若成功返回true，否则返回false
     */
    @POST
    @Path("/update")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public boolean updateJtlgcz(Jtlgcz jtlgcz) {

        return server.updateJtlgcz(jtlgcz);
    }

    /**
     * 添加jtlgcz
     *
     * @param jtlgcz
     *            待添加的jtlgcz
     * @return 若成功返回true，否则返回false
     */
    @PUT
    @Path("/add")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public boolean addJtlgcz(Jtlgcz jtlgcz) {
        return server.addJtlgcz(jtlgcz);
    }

    @GET
    @Path("/info")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Dao>  getShapeById(@QueryParam("id") String id) {
        List<Dao> list  = server.getShapeById(id);
        return list;
    }
    @GET
    @Path("/tjjg")
    @Produces(MediaType.APPLICATION_JSON)
    public StatisticalResult getStatisticalResult(@QueryParam("szlx") String szlx,@QueryParam("xzqhbm") String xzqhbm,@QueryParam("type") String type){
    	xzqhbm = CheckEmpty.subXzqhbm(xzqhbm);
    	Map<String, Object> map = new HashMap<String, Object>();
        map.put("lxbm", szlx);
        map.put("xzqhbm", xzqhbm);
        map.put("type", type);
        StatisticalResult tjjg = server.countByParameter(map);
        return tjjg;
    }

    @GET
   	@Path("/Node")
   	@Produces(MediaType.APPLICATION_JSON)
   	public List<Znode> tree(){
   		return PreparedDataListener.getData("jtlg");
//    	return server.JtlgNode();
   	}
    
	@GET
	@Path("/detail")
	@Produces(MediaType.APPLICATION_JSON)
	public EasyUI<Jtlgcz> detail(@QueryParam("szlx") String szlx,@QueryParam("xzqhbm") String xzqhbm,
			@QueryParam("lxfl") String lxfl,@QueryParam("gcfl") String gcfl,@QueryParam("page") int page,@QueryParam("rows") int rows){
		xzqhbm = CheckEmpty.subXzqhbm(xzqhbm);
		EasyUI<Jtlgcz> easyUI = new EasyUI<Jtlgcz>(page, rows);
		Map<String, Object> map = easyUI.getParameter();
		map.put("lxbm", szlx);
		map.put("xzqhbm", xzqhbm);
		try{
			map.put("lxfl", Integer.parseInt(lxfl));
		}catch (Exception e){
			System.out.println("不是类型分类！");
		}
		try{
			map.put("gcfl", Integer.parseInt(gcfl));
		}catch (Exception e){
			System.out.println("不是观测方向分类！");
		}
		List<Jtlgcz> detail = server.detail(map);
		int total = server.countDetail(map);
		easyUI.setRows(detail);
		easyUI.setTotal(total);
		return easyUI;
	}
    
    @GET
	@Path("/all")
	@Produces(MediaType.APPLICATION_JSON)
	public List<Jtlgcz> all(@QueryParam("lxbm") String lxbm,@QueryParam("xzqhbm")String xzqhbm,
			@QueryParam("sxxfx") String sxxfx,@QueryParam("qdzh") String qdzh_string,
			@QueryParam("zdzh") String zdzh_string,@QueryParam("name") String name){
		Double qdzh = null;
		Double zdzh = null;
		try{
			qdzh = Double.parseDouble(qdzh_string);
			zdzh = Double.parseDouble(zdzh_string);
		}catch(Exception e){
			System.out.println("qdzh和zdzh没有输入或格式错误！");qdzh=null;zdzh=null;
		}
		xzqhbm = CheckEmpty.subXzqhbm(xzqhbm);
		List<Jtlgcz> list = server.listAll(lxbm,xzqhbm,sxxfx,qdzh,zdzh,name);
		return list;
	}
	
	@GET
	@Path("/one")
	@Produces(MediaType.APPLICATION_JSON)
	public Jtlgcz one(@QueryParam("id")String id){
		Jtlgcz one = server.queryById(id);
		return one;
	}
	
	@GET
	@Path("/auto")
	@Produces(MediaType.APPLICATION_JSON)
	public List<String> pienext(@QueryParam("name")String name){
		return server.selectName(name);
	}
}
